/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.brain.sele.manager;

import com.brain.core.manager.*;
import com.brain.core.exception.DAOException;
import com.brain.core.hibernate.dao.DAOGenerico;
import com.brain.sele.dto.MiembroComiteDto;
import com.brain.sele.dto.ResponsableDto;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Service;

/**
 *
 * @author Hvives
 */
@Service
public class ResponsableManager extends ComunManager<ResponsableDto> implements Serializable {

    private static Logger logger = Logger.getLogger(ResponsableManager.class);
    @Resource
    private DAOGenerico<ResponsableDto> springHibernateDao;

    public ResponsableDto obtenerResponsablePorId(Long id) throws DAOException {
        return springHibernateDao.obtenerDtoPorId(ResponsableDto.class, id);
    }

    public List<ResponsableDto> obtenerResponsablesPorReq(Long id) throws DAOException {
        List<ResponsableDto> lista = null;
        Map<String, Object> mapFiltro = new HashMap<String, Object>();
        mapFiltro.put("requerimiento", id);
        mapFiltro.put("estado", Boolean.TRUE);
        Map<String, String> mapOrden = new HashMap<String, String>();
        mapOrden.put("convocEvaluacionDto.orden", "asc");

        try {
            lista = obtenerConFiltroConOrden(mapFiltro, mapOrden);
        } catch (DAOException ex) {
            logger.error("ERROR DE SISTEMA", ex);

        }
        return lista;
    }
    
     public List<ResponsableDto> obtenerResponsablePorReqYEtapaActual(Long idReq, Long idConvEvaluacion) throws DAOException {
        List<Object> listaParametros = new ArrayList<Object>();
        String hqsql = "select e from ResponsableDto as e where e.id=e.id ";
        hqsql += " and e.convocEvaluacionDto.id = ? ";
        hqsql += " and e.requerimientoDto.id = ? ";
        listaParametros.add(idConvEvaluacion);
        listaParametros.add(idReq);
        return springHibernateDao.ejecutarQuery(hqsql, listaParametros);
    }
    
     
    public int obtenerCantidadRespPorMiemComite(MiembroComiteDto miembroDto) throws DAOException {
        List<Object> listaParametros = new ArrayList<Object>();
        String hqsql = "select count(i.id) from ResponsableDto as i ";
        hqsql += " where i.miembroComiteDto.id = ? and i.requerimientoDto.convocatoriaDto.id = ?";
        listaParametros.add(miembroDto.getId());
        listaParametros.add(miembroDto.getConvocatoriaDto().getId());
        return Integer.parseInt(springHibernateDao.ejecutarQueryGeneric(hqsql, listaParametros).get(0).toString());
    }

    public List<ResponsableDto> obtenerConFiltroConOrden(Map<String, Object> filtros, Map<String, String> orden) throws DAOException {
        return springHibernateDao.obtenerDtosConFiltrosConOrden(ResponsableDto.class, filtros, orden);
    }

    public void eliminarMuchos(List<ResponsableDto> lista) throws DAOException {
        springHibernateDao.borrarColeccion(lista);
    }
}
